package org.example.AtomicSty;

import java.util.concurrent.atomic.AtomicInteger;
/*
     对于CAS来说，其操作数主要涉及到如下三个：
        1.需要被操作的内存值V
        2.需要进行比较的值A
        3.需要进行写入的值B
    只有当V==A的时候，CAS才会通过原子操作的手段来将v的值更新为B。

* */

public class AtomicIntegerSty {
    public static void main(String[] args) {
        // 创建一个AtomicInteger实例，初始值为5
        // 原子类，保证操作的原子性,不加锁，底层通过CAS实现
        AtomicInteger atomicInteger = new AtomicInteger(5);

        // 打印当前AtomicInteger的值
        System.out.println(atomicInteger.get());

        // 将AtomicInteger的值设置为8，并返回设置前的值
        System.out.println(atomicInteger.getAndSet(8));

        // 打印当前AtomicInteger的值
        System.out.println(atomicInteger.get());

        // 获取当前AtomicInteger的值，并将其加1，返回加1前的值
        System.out.println(atomicInteger.getAndIncrement());

        // 打印当前AtomicInteger的值
        System.out.println(atomicInteger.get());
    }


}
